<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // n的阶乘

    // 5的阶乘
    // 5! = 5 * 4 * 3 * 2 * 1
    //      5 * 4!
    //          4 * 3!
    //              3 * 2!
    //                  2 * 1!
    //                      1

    // 假设：有一个函数叫fn，他的功能是专门用来计算阶乘
    // fn(5) = 5 * fn(4)
    //                 4 * fn(3)
    //                         3 * fn(2)
    //                                 2 * fn(1)
    //                                         1

    // 总结规律
    // fn(n) = n * fn(n-1)

    // 1的阶乘，是递的终点，归的起点
    // fn(1) = 1;

    // function fn(n){
    //     if(n === 1){
    //         return 1;
    //     }
    //     return n * fn(n-1);
    // }
    // console.log(fn(10));



    // 假设：有一个函数叫fn，他的功能是专门用来计算斐波那契的指定位的数字
    // 1, 1, 2, 3, 5, 8, 13, ...

    // fn(3) = fn(2) + fn(1)

    // 规律
    // fn(n) = fn(n-1) + fn(n-2)
    
    // 递的终点，归的起点
    // fn(1) = 1
    // fn(2) = 1
    
    function fn(n){
        if(n === 1 || n === 2){
            return 1;
        }
        return fn(n-1) + fn(n-2);
    }
    console.log(fn(10));

    
</script>
</html>